<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Hist_Produto_Model extends CI_Model {

	/**
 	* Método construtor executado quando chamado a classe
	* @author Rodrigo Valt <rodrigo.valt@sigma.com.br>
	* @since 28/07/2015 16:58:45
	*/
	public function __construct()
	{
		parent::__construct();
	}
	
	/**
	* Método responsável por salvar o registro no banco
 	* @author Rodrigo Valt <rodrigo@valtsolucoesti.com.br>
	* @author Valt Soluções em TI
	* @since 28/07/2015 16:58:45
	*/
	public function inserir($data){
	
		$retorno = $this->db->insert('tb_histproduto', $data);
		
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao inserir o hist produto. Favor tentar novamente mais tarde.');
		}else{
			if($this->db->affected_rows() > 0){
				return $this->db->insert_id();
			}
		}
	}
	
	/**
	* Método responsável por alterar o registro no banco
 	* @author Rodrigo Valt <rodrigo@valtsolucoesti.com.br>
	* @author Valt Soluções em TI
	* @since 28/07/2015 16:58:45
	*/
	public function alterar($data, $id){
	
		$this->db->where('idHistProduto', $id);
		$retorno = $this->db->update('tb_histproduto', $data);
		
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao alterar o hist produto. Favor tentar novamente mais tarde.');
		}else{
			return true;
		}
	}
	
	/**
	* Método responsável por excluir o registro no banco
 	* @author Rodrigo Valt <rodrigo@valtsolucoesti.com.br>
	* @author Valt Soluções em TI
	* @since 28/07/2015 16:58:45
	*/
	public function excluir($id){
	
		$this->db->where('idHistProduto', $id);
		$retorno = $this->db->delete('tb_histproduto');
	
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao excluir o hist produto. Favor tentar novamente mais tarde.');
		}else{
			return true;
		}
	}
	
	/**
	* Método responsável por obter o registro no banco
 	* @author Rodrigo Valt <rodrigo@valtsolucoesti.com.br>
	* @author Valt Soluções em TI
	* @since 28/07/2015 16:58:45
	*/
	function obter($id){
	
		$sql = "select *
				from tb_histproduto
				where idHistProduto = ".$id;
	
		$query = $this->db->query($sql);
	
		if($query->num_rows() > 0){
			$obj = $query->result();
			
			return $obj[0];
		}else{
			return null;
		}
	}
	
	/**
	 * Método responsável por por obter o histProduto ativo do produto
	 * @author Rodrigo Valt <rodrigo@valtsolucoesti.com.br>
	 * @author Valt Soluções em TI
	 * @since 28/07/2015 17:00:37
	 */
	function obterHistProdutoAtivo($idProduto){
	
		$sql = "select *
				from tb_histproduto
				where idProduto = ".$idProduto."
				and dtVigenciaFim is null";
	
		$query = $this->db->query($sql);
	
		if($query->num_rows() > 0){
			$obj = $query->result();
	
			return $obj[0];
		}else{
			return null;
		}
	}
	
	/**
	 * Método responsável por por buscar o ultimo histproduto
	 * @author Rodrigo Valt <rodrigo@valtsolucoesti.com.br>
	 * @author Valt Soluções em TI
	 * @since 28/07/2015 17:01:03
	 */
	function obterUltimoHistProduto($idProduto){
		$sql = "select *
				from tb_histproduto
				where idProduto = ".$idProduto."
				order by idHistProduto desc";
	
		$query = $this->db->query($sql);
	
		if($query->num_rows() > 0){
			$obj = $query->result();
	
			return $obj[0];
		}else{
			return null;
		}
	}
	
	/**
	 * Método responsável por listar os hist produto do produto
	 * @author Rodrigo Valt <rodrigo@valtsolucoesti.com.br>
	 * @author Valt Soluções em TI
	 * @since 28/07/2015 17:01:18
	 */
	function listarHistProduto($idProduto){
		$sql = "select *
				from tb_histproduto
				where idProduto = ".$idProduto."
				order by idHistProduto desc";
	
		$query = $this->db->query($sql);
	
		if($query->num_rows() > 0){
			$obj = $query->result();
	
			return $obj;
		}else{
			return null;
		}
	}
}
